Technical Q&A DV27
Device Driver Flags


Q: I'm debugging my PCI native driver and notice that the dCtlFlags field of my Device Control Entry (DCE) has some undocumented bits set. What do these flags mean?

A: The current bits in the dCtlFlags field of the DCE are:

  • bit 0 -- VMImmune -- This bit indicates that your device driver is VM safe. See Technote NW 13 for details.

  • bit 1 -- reserved

  • bit 2 -- kmDriverGestaltEnableMask (in "DriverGestalt.h") is set if the driver supports the Driver Gestalt mechanism. See "Designing PCI Cards and Drivers for Power Macintosh Computers" for a description of Driver Gestalt.

  • bit 3 -- Native Driver -- Set if the driver is a native driver (ndrv). The system will set this bit when it loads your native driver.

  • bit 4 -- Concurrent -- Set if the native driver supports concurrent operation. When loading a native driver, the system sets this bit based on the kDriverIsConcurrent field of the driverOSRuntimeInfo.driverRuntime field of your DriverDescription. See "Designing PCI Cards and Drivers for Power Macintosh Computers" for a description of concurrent drivers.

  • bit 5 -- dOpenedMask (in "Devices.h") is set if the driver is open.

  • bit 6 -- dRAMBasedMask (in "Devices.h") is set if the dCtlDriver field is a DRVRHeaderHandle rather than aDRVRHeaderPtr .

  • bit 7 -- drvrActiveMask (in "Devices.h") is set if the driver is currently processing a request.

  • bit 8 -- dReadEnableMask (in "Devices.h") is set if the driver handles _Read requests.

  • bit 9 -- dWritEnableMask (in "Devices.h") is set if the driver handles _Write requests.

  • bit 10 -- dCtlEnableMask (in "Devices.h") is set if the driver handles _Control requests.

  • bit 11 -- dStatEnableMask (in "Devices.h") is set if the driver handles _Status requests.

  • bit 12 -- dNeedGoodByeMask (in "Devices.h") is set if the driver needs a "goodbye" _Control call before the application heap is reinitialized.

  • bit 13 -- dNeedTimeMask (in "Devices.h") is set if the driver wants periodic SystemTask time through the "accRun" _Control call.

  • bit 14 -- dNeedLockMask (in "Devices.h") is set if the driver requires that its DCE and code be locked at all times when the driver is open.

  • bit 15 -- reserved

See "Inside Macintosh:Devices" for more information about bits 5 through to 14.

[Mar 10 1997]


Developer Documentation | Technical Notes | Development Kits | Sample Code